home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / asm-generic / bitops / sched.h < prev   
Encoding:
C/C++ Source or Header  |  2008-12-24  |  721 b   |  32 lines

  1. #ifndef _ASM_GENERIC_BITOPS_SCHED_H_
  2. #define _ASM_GENERIC_BITOPS_SCHED_H_
  3.  
  4. #include <linux/compiler.h>    /* unlikely() */
  5. #include <asm/types.h>
  6.  
  7. /*
  8.  * Every architecture must define this function. It's the fastest
  9.  * way of searching a 100-bit bitmap.  It's guaranteed that at least
  10.  * one of the 100 bits is cleared.
  11.  */
  12. static inline int sched_find_first_bit(const unsigned long *b)
  13. {
  14. #if BITS_PER_LONG == 64
  15.     if (b[0])
  16.         return __ffs(b[0]);
  17.     return __ffs(b[1]) + 64;
  18. #elif BITS_PER_LONG == 32
  19.     if (b[0])
  20.         return __ffs(b[0]);
  21.     if (b[1])
  22.         return __ffs(b[1]) + 32;
  23.     if (b[2])
  24.         return __ffs(b[2]) + 64;
  25.     return __ffs(b[3]) + 96;
  26. #else
  27. #error BITS_PER_LONG not defined
  28. #endif
  29. }
  30.  
  31. #endif /* _ASM_GENERIC_BITOPS_SCHED_H_ */
  32.